#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ----------------------------------------------------------
# -- 
# --
# ****************************
# Author: lmay.Zhou
# Blog: www.lmaye.com
# Date: 2021/7/9 22:28
# Email lmay@lmaye.com
# ----------------------------------------------------------


def cal1(principal, _rate, _years, start=1):
    """
        复利计算方式 1

        :param principal: 本金
        :param _rate: 年化收益率
        :param _years: 年限
        :param start: 起始
        :return: Jump out
    """
    # 收益(本息和 * 年化收益率)
    profit = principal * _rate
    # 本息和(本金 + 收益)
    _sum = principal + profit
    print("{}\t本金={:.2f} \t---> 收益={:.2f} \t---> 本息和={:.2f}".format(start, principal, profit, _sum))
    if start >= _years:
        return 0
    cal1(_sum, _rate, _years, start + 1)


def cal2(principal, _rate, _years, start=1):
    """
        复利计算方式 2

        :param principal: 本金
        :param _rate: 年化收益率
        :param _years: 年限
        :param start: 起始
        :return: Jump out
    """
    # 本息和(本金 * (1 + 年化收益率) ^ 年)
    _sum = principal * (1 + _rate) ** start
    # 本金(当前)
    _principal = _sum / (1 + _rate)
    # 收益(本息和 - 本金)
    profit = _sum - _principal
    print("{}\t本金={:.2f} \t---> 收益={:.2f} \t---> 本息和={:.2f}".format(start, _principal, profit, _sum))
    if start >= _years:
        return 0
    cal2(principal, _rate, _years, start + 1)


if __name__ == "__main__":
    # 年化收益率
    _rate = 13500.0 * 3 / 200000
    print("年化收益率: {} - {}".format(_rate, (418186.82 / 200000) ** (1 / 4) - 1))
    # 复利公式: 本金 * (1 + 年化收益率) ^ 年
    print("本息和={:.2f}".format(200000 * (1 + _rate) ** 10))
    print("--------------------------------\n")
    cal1(200000, _rate, 10)
    print("--------------------------------\n")
    cal2(200000, _rate, 10)
